package com.yituo.mjworld.mvc.action.admin;

import com.yituo.mjworld.core.annotation.NoToken;
import com.yituo.mjworld.core.utils.Constant;
import com.yituo.mjworld.core.web.core.MyHttpRequest;
import com.yituo.mjworld.core.web.core.MyHttpResponse;
import com.yituo.mjworld.mvc.entity.UserData;
import com.yituo.mjworld.mvc.service.impl.QrServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import java.io.IOException;

/**
 *
 */
@Component
public class QrAction {

  @Autowired
  QrServiceImpl qrService;

  /**
   * 扫码重定向后,后台会静默注册用户
   *
   * @param req
   * @param res
   * @throws IOException
   */
  @NoToken
  public void register(MyHttpRequest req, MyHttpResponse res) throws IOException {
    String domain = Constant.getDomain();
    // 二维码的推荐人ID
    String k = req.getParameter("k");
    // 验证码
    String v = req.getParameter("v");
    if (StringUtils.isEmpty(k) || StringUtils.isEmpty(v)) {
      res.setStatus(404);
      res.sendRedirect(domain + "goto/error.html?msg=paramMiss");
      return;
    }
    // 会话ID
    String sid = req.getSession().getId();

    System.out.println("sid:" + sid);
    // 获取缓存中的验证码
    String validateCode = UserData.data.get(sid);
    // 验证通过,静默创建用户!
    if (!StringUtils.isEmpty(validateCode)) {
      String userId = qrService.register(k, sid);
      if (StringUtils.isEmpty(userId)) {
        res.setStatus(404);
        res.sendRedirect(domain + "goto/error.html?msg=noparent");
        return;
      }
      // 移除验证码
      UserData.data.remove(sid);
      res.sendRedirect(domain + "goto/qrLogin.html?uid=" + userId);
    } else {
      res.setStatus(404);
      res.sendRedirect(domain + "goto/error.html?msg=noequals");
    }
    return;
  }
}
